package com.cares.event.constant;

import java.util.ArrayList;
import java.util.List;

import com.cares.event.dto.EventActivityDto;

/**
 * 流程静态变量
 * @author xuji
 *
 */
public class EventSystemConstant {
	
	/**
	 * 流程执行任务
	 */
	public static List<EventActivityDto> eventActivityDtos = new ArrayList<EventActivityDto>(); 
	
	//添加流程执行任务
	public static synchronized boolean addJsflowExecutionDto(EventActivityDto jsflowExecutionDto){
		boolean isAdd = true;
		if(eventActivityDtos.size() <= 0){
			eventActivityDtos.add(jsflowExecutionDto);
		}else{
			for(EventActivityDto temp : eventActivityDtos){
				if(temp.getExecutionId() == jsflowExecutionDto.getExecutionId()){
					isAdd = false;
				}
			}
			if(isAdd){
				eventActivityDtos.add(jsflowExecutionDto);
			}
		}
		return isAdd;
	}
		
	
	/**
	 * 移除执行任务
	 */
	public static synchronized boolean removeEventActivityDto(EventActivityDto jsflowExecutionDto){
		boolean isRemove = false;
		if(eventActivityDtos.size() > 0){
			for(EventActivityDto temp : eventActivityDtos){
				if(temp.getExecutionId() == jsflowExecutionDto.getExecutionId()){
					eventActivityDtos.remove(temp);
					isRemove = true;
				}
			}
		}
		return isRemove;
	}
	
	/**
	 * 获取可以执行的任务
	 * 1、查找流程的起始任务，根据属性，判断是否执行
	 * 1、查找已运行的流程的待执行任务，根据前一个任务的输出结果判断是否执行
	 */
	public static List<EventActivityDto> getEventActivityDtos(){
		List<EventActivityDto> results = new ArrayList<EventActivityDto>();
		for(EventActivityDto dto : eventActivityDtos){
			if(EventFlowConstant.EVENT_FLOW_STATE_NO.equals(dto.getTaskStatus())){//起始任务
				//如果是立即启动
				if(EventFlowConstant.EVENT_FLOW_START_NOW_YES.equals(dto.getStartNow())){
					results.add(dto);
				}else{
					if(System.currentTimeMillis()-dto.getStartTime().getTime()>=0){
						results.add(dto);
					}
				}
			}else{//已运行的流程的待执行任务
				if(EventFlowConstant.EVENT_TASK_STATE_NO.equals(dto.getTaskStatus())){
					results.add(dto);
				}
			}
		}
		return results;
	}
	

}
